package com.lanswon.service;

import java.util.HashMap;
import java.util.Map;

import org.springframework.stereotype.Service;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import com.lanswon.common.constants.Constants;

/**  
* @ClassName: MobileService  
* @Description: TODO(手机短信类)  
* @author zhangboyun
* @date 2018年10月31日 下午4:41:47  
*    
*/
@Service
public class MobileService {
	// 初始化ascClient需要的几个参数
	private final String product = "Dysmsapi";// 短信API产品名称（短信产品名固定，无需修改）
	private final String domain = "dysmsapi.aliyuncs.com";// 短信API产品域名（接口地址固定，无需修改）
	
	/**  
	* @Title: sendSmsVerificationCode
	* @Description: TODO(发送验证码)
	* @param @param phoneNum	手机号
	* @param @param code	验证码
	* @param @param smsTemplate	短信模板
	* @param @return
	*
	*/
	public Map<String, Object> sendSmsVerificationCode(String phoneNum,String templateParams,String smsTemplate){
		Map<String, Object> viewMap = new HashMap<>();
		
		try {
			IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", Constants.SMS_ACCESSKEYID, Constants.SMS_ACCESSSECRET);
			DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
			IAcsClient acsClient = new DefaultAcsClient(profile);
			// 组装请求对象
			SendSmsRequest request = new SendSmsRequest();
			// 使用post提交
			request.setMethod(MethodType.POST);
			// 必填:待发送手机号。支持以逗号分隔的形式进行批量调用，批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式；发送国际/港澳台消息时，接收号码格式为国际区号+号码，如“85200000000”
			request.setPhoneNumbers(phoneNum);
			// 必填:短信签名-可在短信控制台中找到
			request.setSignName("青州智慧城市信息科技");
			// 必填:短信模板-可在短信控制台中找到，发送国际/港澳台消息时，请使用国际/港澳台短信模版
			request.setTemplateCode(smsTemplate);
			request.setTemplateParam(templateParams);
			SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
			if (sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {
				// 请求成功
				viewMap.put("code", 0);
				viewMap.put("msg", "成功请求");
			}else{
				viewMap.put("code", 1);
				viewMap.put("msg", "失败请求");
			}
		} catch (ClientException e) {
			e.printStackTrace();
			viewMap.put("code", 2);
			viewMap.put("msg", "失败请求");
		}
		return viewMap;
	}
	
}
